/*
 * Copyright/Licensing information.
 */

/* inclusion guard */
#ifndef __ECV_VO_H__
#define __ECV_VO_H__

/*
 * Glib includes
 */
#include <glib-object.h>

/*
 * Potentially, include other headers on which this header depends.
 */


/*
 * Type macros.
 */
#define ECV_TYPE_VO                  (ecv_vo_get_type ())
#define ECV_VO(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), ECV_TYPE_VO, EcvVo))
#define ECV_IS_VO(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ECV_TYPE_VO))
#define ECV_VO_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), ECV_TYPE_VO, EcvVoClass))
#define ECV_IS_VO_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), ECV_TYPE_VO))
#define ECV_VO_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), ECV_TYPE_VO, EcvVoClass))

typedef struct _EcvVo        EcvVo;
typedef struct _EcvVoClass   EcvVoClass;
typedef struct _EcvVoPrivate EcvVoPrivate;

struct _EcvVo
{
  GObject parent_instance;

  /*< public >*/

  /*< private >*/
  EcvVoPrivate *priv;
};

struct _EcvVoClass
{
  GObjectClass parent_class;

  /* class members */
  /*< public >*/

};

/* used by ECV_TYPE_VO */
GType ecv_vo_get_type (void);

/*
 * Method definitions.
 */

void 
ecv_vo_create (EcvVo *self);

void
ecv_vo_set(EcvVo *self, char * data, int size);

void
ecv_vo_draw (EcvVo *self);

void
ecv_vo_events (EcvVo *self);

int
ecv_vo_get_quit(EcvVo *self);

EcvVo * 
ecv_vo_new (int width, int height, int bpp, char * wcap);

#endif /* __ECV_VO_H__ */
